//package com.app.newiptv.activity;
//
//import android.content.Context;
//import android.support.annotation.AttrRes;
//import android.support.annotation.NonNull;
//import android.support.annotation.Nullable;
//import android.text.TextUtils;
//import android.util.AttributeSet;
//import android.view.Gravity;
//import android.view.SurfaceHolder;
//import android.view.SurfaceView;
//import android.widget.FrameLayout;
//
//import java.io.IOException;
//
//import tv.danmaku.ijk.media.player.IMediaPlayer;
//import tv.danmaku.ijk.media.player.IjkMediaPlayer;
//
///**
// * 普通的视频播放器
// * Created by GuoShaoHong on 2017/7/25.
// */
//
//public class VideoPlayerIJK extends FrameLayout {
//
//    /**
//     * 由ijkplayer提供，用于播放视频，需要给他传入一个surfaceView
//     */
//    private IMediaPlayer mMediaPlayer = null;
//
//    /**
//     * 视频文件地址
//     */
//    private String mPath = "";
//
//    private SurfaceView surfaceView;
//
//    private VideoPlayerListener listener;
//    private Context mContext;
//
//    public VideoPlayerIJK(@NonNull Context context) {
//        super(context);
//        initVideoView(context);
//    }
//
//    public VideoPlayerIJK(@NonNull Context context, @Nullable AttributeSet attrs) {
//        super(context, attrs);
//        initVideoView(context);
//    }
//
//    public VideoPlayerIJK(@NonNull Context context, @Nullable AttributeSet attrs, @AttrRes int defStyleAttr) {
//        super(context, attrs, defStyleAttr);
//        initVideoView(context);
//    }
//
//    private void initVideoView(Context context) {
//        mContext = context;
//
//        //获取焦点，不知道有没有必要~。~
//        setFocusable(true);
//    }
//
//    /**
//     * 设置视频地址。
//     * 根据是否第一次播放视频，做不同的操作。
//     *
//     * @param path the path of the video.
//     */
//    public void setVideoPath(String path) {
//        if (TextUtils.equals("", mPath)) {
//            //如果是第一次播放视频，那就创建一个新的surfaceView
//            mPath = path;
//            createSurfaceView();
//        } else {
//            //否则就直接load
//            mPath = path;
//            load();
//        }
//    }
//
//    /**
//     * 新建一个surfaceview
//     */
//    private void createSurfaceView() {
//        //生成一个新的surface view
//        surfaceView = new SurfaceView(mContext);
//        surfaceView.getHolder().addCallback(new LmnSurfaceCallback());
//        LayoutParams layoutParams = new LayoutParams(LayoutParams.MATCH_PARENT
//                , LayoutParams.MATCH_PARENT, Gravity.CENTER);
//        surfaceView.setLayoutParams(layoutParams);
//        this.addView(surfaceView);
//    }
//
//    /**
//     * surfaceView的监听器
//     */
//    private class LmnSurfaceCallback implements SurfaceHolder.Callback {
//        @Override
//        public void surfaceCreated(SurfaceHolder holder) {
//        }
//
//        @Override
//        public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
//            //surfaceview创建成功后，加载视频
//            load();
//        }
//
//        @Override
//        public void surfaceDestroyed(SurfaceHolder holder) {
//        }
//    }
//
//    /**
//     * 加载视频
//     */
//    private void load() {
//        //每次都要重新创建IMediaPlayer
//        createPlayer();
//        try {
//            mMediaPlayer.setDataSource(mPath);
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        //给mediaPlayer设置视图
//        mMediaPlayer.setDisplay(surfaceView.getHolder());
//
//        mMediaPlayer.prepareAsync();
//    }
//
//    /**
//     * 创建一个新的player
//     */
//    private void createPlayer() {
//        if (mMediaPlayer != null) {
//            mMediaPlayer.stop();
//            mMediaPlayer.setDisplay(null);
//            mMediaPlayer.release();
//        }
//        IjkMediaPlayer ijkMediaPlayer = new IjkMediaPlayer();
//        ijkMediaPlayer.native_setLogLevel(IjkMediaPlayer.IJK_LOG_DEBUG);
//
////        //开启硬解码
//        ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec", 1);
//
//        mMediaPlayer = ijkMediaPlayer;
//
//        if (listener != null) {
//            mMediaPlayer.setOnPreparedListener(listener);
//            mMediaPlayer.setOnInfoListener(listener);
//            mMediaPlayer.setOnSeekCompleteListener(listener);
//            mMediaPlayer.setOnBufferingUpdateListener(listener);
//            mMediaPlayer.setOnErrorListener(listener);
//        }
//    }
//
//    public void setListener(VideoPlayerListener listener) {
//        this.listener = listener;
//        if (mMediaPlayer != null) {
//            mMediaPlayer.setOnPreparedListener(listener);
//        }
//    }
//
//    /**
//     * -------======--------- 下面封装了一下控制视频的方法
//     */
//
//    public void start() {
//        if (mMediaPlayer != null) {
//            mMediaPlayer.start();
//        }
//    }
//
//    public void release() {
//        if (mMediaPlayer != null) {
//            mMediaPlayer.reset();
//            mMediaPlayer.release();
//            mMediaPlayer = null;
//        }
//    }
//
//    public void pause() {
//        if (mMediaPlayer != null) {
//            mMediaPlayer.pause();
//        }
//    }
//
//    public void stop() {
//        if (mMediaPlayer != null) {
//            mMediaPlayer.stop();
//        }
//    }
//
//
//    public void reset() {
//        if (mMediaPlayer != null) {
//            mMediaPlayer.reset();
//        }
//    }
//
//
//    public long getDuration() {
//        if (mMediaPlayer != null) {
//            return mMediaPlayer.getDuration();
//        } else {
//            return 0;
//        }
//    }
//
//
//    public long getCurrentPosition() {
//        if (mMediaPlayer != null) {
//            return mMediaPlayer.getCurrentPosition();
//        } else {
//            return 0;
//        }
//    }
//
//
//    public void seekTo(long l) {
//        if (mMediaPlayer != null) {
//            mMediaPlayer.seekTo(l);
//        }
//    }
//}
